There is an ongoing need for tools that effectively locate performance bottlenecks in applications that access one or more databases. In particular, there is a need to distinguish between delays attributable to bottlenecks in the database tier (e.g. delays associated with execution of a given SQL statement and/or database stored procedure) and delays derived from execution of the client application code. In some systems, this problem is complicated by the fact that distributed application code residing on one or more client machines accesses a plurality of different databases residing on different database machines. Furthermore, it is noted that in many situations the accessed databases are not accessed exclusively by the performance-monitored application, but rather are simultaneously accessed by other applications.
In order to address the aforementioned issues, there is an ongoing need for systems and methods for monitoring which database services are being accessed by the performance-monitored application, and under which conditions these services are being accessed.
In particular, there is an ongoing need for systems and methods operative to instrument into application code instructions for maintaining a log of database access strings invoked by a particular performance-monitored application. This would, for example, enable the tracking of particular query strings and/or the names of stored procedures invoked by the application.
Furthermore, there is a need for systems and methods operative to instrument into application code instructions for maintaining a log of database connection string, or database connection description strings. In general, connection strings encode a plurality of paramaters related to the database connection used for a specific database call, such performance parameters, database identifiers, and security parameters. Therefore, the logging of database connection strings during runtime is useful for performance-monitoring a given application.
Furthermore, is noted that many database related strings such as SQL statements, stored procedure names, and database connection strings may be generated dynamically during runtime. Therefore, there is an ongoing need for tools which can extract and/or monitor dynamically generated strings during runtime.